package com.app.service.impl;

import com.app.mapper.MessageMapper;
import com.app.mapper.TypeMapper;
import com.app.model.MessageModel;
import com.app.service.MessageService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
@Primary
public class MessageServiceImpl implements MessageService {
    @Autowired
    TypeMapper typeMapper;
    @Autowired
    MessageMapper messageMapper;

    @Override
    public MessageModel getMesByMesId(int id) {
        QueryWrapper<MessageModel> queryWrapper = new QueryWrapper<>();
        queryWrapper.select().eq("id", id);
        MessageModel messageModel = messageMapper.selectOne(queryWrapper);
        if (messageModel == null) {
            return null;
        } else {
            return messageModel;
        }
    }

    @Override
    public List<MessageModel> getPageMesList(MessageModel MessageModel) {
        return messageMapper.selectJoinList(MessageModel);
    }

    @Override
    public List<MessageModel> getMesListByDepId(Integer departmentId) {
        QueryWrapper<MessageModel> queryWrapper = new QueryWrapper<>();
        queryWrapper.select().apply(departmentId != null, "FIND_IN_SET ('" + departmentId + "',department_id )");
        List<MessageModel> messageModels = messageMapper.selectList(queryWrapper);
        return messageModels;
    }

    @Override
    public void update(MessageModel model) {
        messageMapper.updateById(model);
    }

    @Override
    public int count() {
        QueryWrapper<MessageModel> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("id");
        int count = messageMapper.selectCount(queryWrapper);
        return count;
    }

    @Override
    public void insert(MessageModel model) {
        messageMapper.insert(model);
    }

    @Override
    public void delete(int id) {
        messageMapper.deleteById(id);
    }

    @Override
    public List<MessageModel> selectMessageList(Integer page, Integer limit, String title, Integer sortType) {
        page = (page - 1) * limit;
        return messageMapper.selectMessageList(page, limit, title,sortType);
    }
}
